#include<stdio.h>
#include<stdlib.h>
#define maxsize 100
typedef struct{
	int data[maxsize];
	int top;
}stack;

void initstack(stack *s)
{
	s->top=-1;
}

int isemptystack(stack *s)
{
	return s->top==-1;
}

void push(stack *s,int value)
{
	s->data[++(s->top)]=value;
}

int pop(stack *s)
{
	return s->data[(s->top)--];
}

typedef struct{
	int data[maxsize];
	int front;
	int rear;
}queue;

void initqueue(queue *q)
{
	q->front=0;
	q->rear=0;
}

int isemptyqueue(queue *q)
{
	return q->front==q->rear;
}

void enqueue(queue *q,int value)
{
	q->data[q->rear++]=value;
}

int dequeue(queue *q)
{
	return q->data[q->front++];
}

void bubblesort(int arr[],int n)
{
	for(int i=0;i<n-1;i++)
	{
		for(int j=0;j<n-i-1;j++)
		{
			if(arr[j]>arr[j+1])
			{
				int temp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
			}
		}
	}
}
void reorder(int arr[],int n)
{
	stack s;
	initstack(&s);
	queue q;
	initqueue(&q);
	bubblesort(arr,n);
	for(int i=0;i<n;i++)
	{
		if(arr[i]%2!=0)
		{
			push(&s,arr[i]);
		}
	}
	for(int i=0;i<n;i++)
	{
		if(arr[i]%2==0)
		{
			enqueue(&q,arr[i]);
		}
	}
	while(!isemptystack(&s))
	{
		printf("%d ",pop(&s));
	}
	while(!isemptyqueue(&q))
	{
		printf("%d ",dequeue(&q));
	}
	printf("\n");
}
int main()
{
	int arr[maxsize];
	int n=0;
	int num;
	while(scanf("%d",&num)!=EOF)
	{
		arr[n++]=num;
	}
	reorder(arr,n);
	return 0;
}
